package com.example.data.vo;

import com.example.data.entity.kg.KgEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 三元组视图对象：封装完整的 (头实体, 关系, 尾实体) 结构
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Triple {
    // ------------------- 头实体信息 -------------------
    private Long headEntityId;         // 头实体ID（kg_entity.id）
    private String headEntityName;     // 头实体名称（kg_entity.entity_name）
    private String headEntityType;     // 头实体类型（kg_entity.entity_type）
    private String headEntityAlias;    // 头实体别名（kg_entity.entity_alias）
    private String headEntityDesc;     // 头实体描述（kg_entity.entity_desc）

    // ------------------- 关系信息 -------------------
    private Long relationId;           // 关系ID（kg_relation.id）
    private String relationType;       // 关系类型（kg_relation.relation_type）
    private String relationDesc;       // 关系描述（kg_relation.relation_desc）
    private Double relationConfidence; // 关系置信度（kg_relation.confidence）
    private LocalDateTime relationCreateTime; // 关系创建时间（kg_relation.create_time）

    // ------------------- 尾实体信息 -------------------
    private Long tailEntityId;         // 尾实体ID（kg_entity.id）
    private String tailEntityName;     // 尾实体名称（kg_entity.entity_name）
    private String tailEntityType;     // 尾实体类型（kg_entity.entity_type）
    private String tailEntityAlias;    // 尾实体别名（kg_entity.entity_alias）
    private String tailEntityDesc;     // 尾实体描述（kg_entity.entity_desc）

    // 可选：来源信息（溯源用）
    private Long sourceRawId;          // 原始数据ID（kg_relation.source_raw_id）
    private Long sourceCleanedId;      // 清洗数据ID（kg_relation.source_cleaned_id）
}